/**
 * Bind event when mounted or activated
 */
import { on, off } from '../utils/dom/event'
var uid = 0
export function BindEventMixin(handler) {
  var key = 'binded_' + uid++

  function bind() {
    if (!this[key]) {
      handler.call(this, on, true)
      this[key] = true
    }
  }

  function unbind() {
    if (this[key]) {
      handler.call(this, off, false)
      this[key] = false
    }
  }

  return {
    mounted: bind,
    activated: bind,
    deactivated: unbind,
    beforeDestroy: unbind
  }
}
